package br.jsf;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import br.data.crud.CrudProdutos;
import br.data.model.Clientes;
import br.jsf.RFacesUsers;
import java.util.Collection;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author thiago
 */
@ManagedBean
@RequestScoped
public class RFacesProdutos {

    /** Creates a new instance of RFacesProdutos */
    public RFacesProdutos() {
    }
    private Integer codigoprod;
    private String descricao;
    private String unidademedida;
    private Clientes codigocli;

    public Clientes getCodigocli() {
        return codigocli;
    }

    public void setCodigocli(Clientes codigocli) {
        this.codigocli = codigocli;
    }

    public Integer getCodigoprod() {
        return codigoprod;
    }

    public void setCodigoprod(Integer codigoprod) {
        this.codigoprod = codigoprod;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public String getUnidademedida() {
        return unidademedida;
    }

    public void setUnidademedida(String unidademedida) {
        this.unidademedida = unidademedida;
    }

    public int getNovoCodigo() {
        return new br.data.crud.CrudProdutos().getNovoCodigo();
    }

    public void setCodigoCliBean() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

        int codigoCli = beanUsers.getCli().getCodigocli();
        this.codigocli = new br.data.crud.CrudClientes().getCliente(codigoCli);
    }

    public Collection<br.data.model.Produtos> getAll() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        RFacesUsers beanUsers = (RFacesUsers) facesContext.getApplication().createValueBinding("#{rFacesUsers}").getValue(facesContext);

        int codCli = beanUsers.getCli().getCodigocli();
        return new br.data.crud.CrudProdutos().getAll(codCli);
    }

    public String removerProduto() {
        try {
            java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

            int codProd = Integer.parseInt(params.get("codProd"));
            new br.data.crud.CrudProdutos().remove(codProd);

            return "cliente_cons_produto.xhtml";
        } catch (Exception e) {
            return "errorpage.xhtml";
        }
    }

    public String inserirProduto() {
        try {
            br.data.model.Produtos prod = new br.data.model.Produtos();
            this.setCodigoCliBean();
            prod.setCodigocli(this.codigocli);
            prod.setCodigoprod(new br.data.crud.CrudProdutos().getNovoCodigo());
            prod.setDescricao(descricao);
            prod.setUnidademedida(unidademedida);
            new br.data.crud.CrudProdutos().persist(prod);
            return "cliente_cons_produto.xhtml";
        } catch (Exception e) {
            return "errorpage.xhtml";
        }
    }
    
    public String modificaProduto() {
        try {
            
            this.setCodigoCliBean();
            new br.data.crud.CrudProdutos().update(codigoprod, codigocli, descricao, unidademedida);

            return "cliente_cons_produto.xhtml";
        } catch (Exception e) {
            return "errorpage.xhtml";
        }
    }
    
    public String pagModificaProduto() {
        try {
            java.util.Map<String, String> params = javax.faces.context.FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();

            this.codigoprod = Integer.parseInt(params.get("codProd"));
            br.data.model.Produtos prod = new br.data.crud.CrudProdutos().getProduto(codigoprod);

            this.codigoprod = prod.getCodigoprod();
            this.descricao = prod.getDescricao();
            this.unidademedida = prod.getUnidademedida();

            return "cliente_alt_produto.xhtml";
        } catch (Exception e) {
            return "errorpage.xhtml";
        }
    }
}
